Skip to content
Snippets Groups Projects
Commit 39326b89 authored by Rye Mutt's avatar Rye Mutt :bread:
Browse files

Port linux to gtk3

parent a4bfd233
No related branches found
No related tags found
No related merge requests found
......@@ -37,18 +37,7 @@ else (USESYSTEMLIBS)
include(FindPkgConfig)
set(PKGCONFIG_PACKAGES
atk
cairo
gdk-2.0
gdk-pixbuf-2.0
glib-2.0
gmodule-2.0
gtk+-2.0
gthread-2.0
pango
pangoft2
pangox
pangoxft
gtk+-3.0
x11
xinerama
)
......
......@@ -2388,14 +2388,14 @@ S32 OSMessageBoxSDL(const std::string& text, const std::string& caption, U32 typ
return rtn;
}
static void color_changed_callback(GtkWidget *widget,
gpointer user_data)
{
GtkColorSelection *colorsel = GTK_COLOR_SELECTION(widget);
GdkColor *colorp = (GdkColor*)user_data;
// static void color_changed_callback(GtkWidget *widget,
// gpointer user_data)
// {
// GtkColorSelection *colorsel = GTK_COLOR_SELECTION(widget);
// GdkColor *colorp = (GdkColor*)user_data;
gtk_color_selection_get_current_color(colorsel, colorp);
}
// gtk_color_selection_get_current_color(colorsel, colorp);
// }
/*
......@@ -2436,63 +2436,61 @@ BOOL LLWindowSDL::dialogColorPicker( F32 *r, F32 *g, F32 *b)
beforeDialog();
if (ll_try_gtk_init())
{
GtkWidget *win = NULL;
win = gtk_color_selection_dialog_new(NULL);
# if LL_X11
// Get GTK to tell the window manager to associate this
// dialog with our non-GTK SDL window, which should try
// to keep it on top etc.
if (mSDL_XWindowID != None)
{
gtk_widget_realize(GTK_WIDGET(win)); // so we can get its gdkwin
GdkWindow* gdkwin = gdk_x11_window_foreign_new_for_display(gdk_display_get_default(), static_cast<Window>(mSDL_XWindowID));
gdk_window_set_transient_for(gtk_widget_get_window(GTK_WIDGET(win)), gdkwin);
}
# endif //LL_X11
GtkColorSelection *colorsel = GTK_COLOR_SELECTION (gtk_color_selection_dialog_get_color_selection (GTK_COLOR_SELECTION_DIALOG(win)));
GdkColor color, orig_color;
orig_color.pixel = 0;
orig_color.red = guint16(65535 * *r);
orig_color.green= guint16(65535 * *g);
orig_color.blue = guint16(65535 * *b);
color = orig_color;
gtk_color_selection_set_previous_color (colorsel, &color);
gtk_color_selection_set_current_color (colorsel, &color);
gtk_color_selection_set_has_palette (colorsel, TRUE);
gtk_color_selection_set_has_opacity_control(colorsel, FALSE);
gint response = GTK_RESPONSE_NONE;
g_signal_connect (win,
"response",
G_CALLBACK (response_callback),
&response);
g_signal_connect (G_OBJECT (colorsel), "color_changed",
G_CALLBACK (color_changed_callback),
&color);
gtk_window_set_modal(GTK_WINDOW(win), TRUE);
gtk_widget_show_all(win);
gtk_main();
if (response == GTK_RESPONSE_OK &&
(orig_color.red != color.red
|| orig_color.green != color.green
|| orig_color.blue != color.blue) )
{
*r = color.red / 65535.0f;
*g = color.green / 65535.0f;
*b = color.blue / 65535.0f;
rtn = TRUE;
}
}
// if (ll_try_gtk_init())
// {
// GtkWidget* win = gtk_color_chooser_dialog_new();
// # if LL_X11
// // Get GTK to tell the window manager to associate this
// // dialog with our non-GTK SDL window, which should try
// // to keep it on top etc.
// if (mSDL_XWindowID != None)
// {
// gtk_widget_realize(GTK_WIDGET(win)); // so we can get its gdkwin
// GdkWindow* gdkwin = gdk_x11_window_foreign_new_for_display(gdk_display_get_default(), static_cast<Window>(mSDL_XWindowID));
// gdk_window_set_transient_for(gtk_widget_get_window(GTK_WIDGET(win)), gdkwin);
// }
// # endif //LL_X11
// GtkColorSelection *colorsel = GTK_COLOR_SELECTION (gtk_color_selection_dialog_get_color_selection (GTK_COLOR_SELECTION_DIALOG(win)));
// GdkColor color, orig_color;
// orig_color.pixel = 0;
// orig_color.red = guint16(65535 * *r);
// orig_color.green= guint16(65535 * *g);
// orig_color.blue = guint16(65535 * *b);
// color = orig_color;
// gtk_color_selection_set_previous_color (colorsel, &color);
// gtk_color_selection_set_current_color (colorsel, &color);
// gtk_color_selection_set_has_palette (colorsel, TRUE);
// gtk_color_selection_set_has_opacity_control(colorsel, FALSE);
// gint response = GTK_RESPONSE_NONE;
// g_signal_connect (win,
// "response",
// G_CALLBACK (response_callback),
// &response);
// g_signal_connect (G_OBJECT (colorsel), "color_changed",
// G_CALLBACK (color_changed_callback),
// &color);
// gtk_window_set_modal(GTK_WINDOW(win), TRUE);
// gtk_widget_show_all(win);
// gtk_main();
// if (response == GTK_RESPONSE_OK &&
// (orig_color.red != color.red
// || orig_color.green != color.green
// || orig_color.blue != color.blue) )
// {
// *r = color.red / 65535.0f;
// *g = color.green / 65535.0f;
// *b = color.blue / 65535.0f;
// rtn = TRUE;
// }
// }
afterDialog();
......
......@@ -1069,13 +1069,13 @@ GtkWindow* LLFilePicker::buildFilePicker(bool is_save, bool is_folder, std::stri
win = gtk_file_chooser_dialog_new(NULL, NULL,
pickertype,
GTK_STOCK_CANCEL,
"_Cancel",
GTK_RESPONSE_CANCEL,
is_folder ?
GTK_STOCK_APPLY :
"_Apply" :
(is_save ?
GTK_STOCK_SAVE :
GTK_STOCK_OPEN),
"_Save" :
"_Open"),
GTK_RESPONSE_ACCEPT,
(gchar *)NULL);
mCurContextName = context;
......
......@@ -61,7 +61,9 @@
#endif
extern "C" {
// mostly for Linux, possible on others
# include "gtk/gtk.h"
#include <gtk/gtk.h>
#include <gdk/gdk.h>
#include <gdk/gdkx.h>
}
#if LL_GNUC
#pragma GCC diagnostic pop
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment