[dasher: 109/217] Fix startup warnings and some Gtk3 deprecation warnings on Linux



commit 98a260f2c17c09c509873297e00923584731e307
Author: David Barnett <dbarnett google com>
Date:   Wed Nov 4 01:20:36 2015 -0800

    Fix startup warnings and some Gtk3 deprecation warnings on Linux

 Src/Gtk2/DasherControl.cpp          |   29 ++++++++++++++++++++++-------
 Src/Gtk2/GtkDasherControl.cpp       |    9 ++++++++-
 Src/Gtk2/dasher_editor.cpp          |   19 ++++++++++++++-----
 Src/Gtk2/dasher_main.cpp            |   12 ++++++------
 Src/Gtk2/module_settings_window.cpp |    2 +-
 5 files changed, 51 insertions(+), 20 deletions(-)
---
diff --git a/Src/Gtk2/DasherControl.cpp b/Src/Gtk2/DasherControl.cpp
index ba01d3d..fa6b480 100644
--- a/Src/Gtk2/DasherControl.cpp
+++ b/Src/Gtk2/DasherControl.cpp
@@ -461,15 +461,30 @@ void CDasherControl::ExternalKeyUp(int iKeyVal) {
 int CDasherControl::TimerEvent() {
   int x, y;
   GdkWindow *default_root_window = gdk_get_default_root_window();
+  GdkWindow *window;
 
 #if GTK_CHECK_VERSION (2,14,0)
-  gdk_window_get_pointer(gtk_widget_get_window(m_pCanvas), &x, &y, NULL);
+  window = gtk_widget_get_window(m_pCanvas);
 #else
-  gdk_window_get_pointer(m_pCanvas->window, &x, &y, NULL);
+  window = m_pCanvas->window;
+#endif
+
+#if GTK_CHECK_VERSION (3,0,0)
+  GdkDeviceManager *device_manager =
+    gdk_display_get_device_manager(gdk_window_get_display(window));
+  GdkDevice *pointer = gdk_device_manager_get_client_pointer(device_manager);
+
+  gdk_window_get_device_position(window, pointer, &x, &y, NULL);
+#else
+  gdk_window_get_pointer(window, &x, &y, NULL);
 #endif
   m_pMouseInput->SetCoordinates(x, y);
 
+#if GTK_CHECK_VERSION (3,0,0)
+  gdk_window_get_device_position(default_root_window, pointer, &x, &y, NULL);
+#else
   gdk_window_get_pointer(default_root_window, &x, &y, NULL);
+#endif
 
   int iRootWidth;
   int iRootHeight;
@@ -498,11 +513,7 @@ int CDasherControl::TimerEvent() {
       GdkRectangle sWindowRect;
       GdkRectangle sCanvasRect;
 
-#if GTK_CHECK_VERSION (2,14,0)
-      gdk_window_get_frame_extents(gtk_widget_get_window(m_pCanvas), &sWindowRect);
-#else
-      gdk_window_get_frame_extents(m_pCanvas->window, &sWindowRect);
-#endif
+      gdk_window_get_frame_extents(window, &sWindowRect);
 
       pUserLog->AddWindowSize(sWindowRect.y, 
                               sWindowRect.x, 
@@ -519,7 +530,11 @@ int CDasherControl::TimerEvent() {
 
       int iMouseX = 0;
       int iMouseY = 0;  
+#if GTK_CHECK_VERSION (3,0,0)
+      gdk_window_get_device_position(NULL, pointer, &iMouseX, &iMouseY, NULL);
+#else
       gdk_window_get_pointer(NULL, &iMouseX, &iMouseY, NULL);
+#endif
 
       // TODO: This sort of thing shouldn't be in specialised methods, move into base class somewhere
       pUserLog->AddMouseLocationNormalized(iMouseX, iMouseY, true, GetNats());
diff --git a/Src/Gtk2/GtkDasherControl.cpp b/Src/Gtk2/GtkDasherControl.cpp
index 6e1aea1..28bdd76 100644
--- a/Src/Gtk2/GtkDasherControl.cpp
+++ b/Src/Gtk2/GtkDasherControl.cpp
@@ -50,8 +50,12 @@ enum {
 
 #define GTK_DASHER_CONTROL_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), GTK_DASHER_TYPE_CONTROL, 
GtkDasherControlPrivate));
 
-/* TODO: is it still sensible to derive from VBox, given that its just a cnavas now*/
+/* TODO: is it still sensible to derive from Box, given that its just a canvas now*/
+#if GTK_CHECK_VERSION (3,0,0)
+G_DEFINE_TYPE(GtkDasherControl, gtk_dasher_control, GTK_TYPE_BOX);
+#else
 G_DEFINE_TYPE(GtkDasherControl, gtk_dasher_control, GTK_TYPE_VBOX);
+#endif
 
 static void gtk_dasher_control_finalize(GObject * pObject);
 
@@ -228,6 +232,9 @@ gtk_dasher_control_get_context(GtkDasherControl *pControl, unsigned int iStart,
 std::string
 gtk_dasher_control_get_all_text(GtkDasherControl *pControl) {
   GtkDasherControlPrivate *pPrivate = GTK_DASHER_CONTROL_GET_PRIVATE(pControl);
+  if (pPrivate->pEditor == NULL) {
+    return "";
+  }
   return dasher_editor_get_all_text(pPrivate->pEditor);
 }
 
diff --git a/Src/Gtk2/dasher_editor.cpp b/Src/Gtk2/dasher_editor.cpp
index f4a3361..6f27ab8 100644
--- a/Src/Gtk2/dasher_editor.cpp
+++ b/Src/Gtk2/dasher_editor.cpp
@@ -17,7 +17,11 @@
 #include "GtkDasherControl.h"
 #include "../DasherCore/ControlManager.h"
 
+#if GTK_CHECK_VERSION (3,0,0)
+G_DEFINE_TYPE(DasherEditor, dasher_editor, GTK_TYPE_BOX);
+#else
 G_DEFINE_TYPE(DasherEditor, dasher_editor, GTK_TYPE_VBOX);
+#endif
 
 /* Signals */
 enum {
@@ -197,8 +201,13 @@ dasher_editor_finalize(GObject *pObject) {
 DasherEditor*
 dasher_editor_new(void)
 {
+#if GTK_CHECK_VERSION (3,0,0)
+  return
+    DASHER_EDITOR(g_object_new(DASHER_TYPE_EDITOR, "orientation", GTK_ORIENTATION_VERTICAL, NULL));
+#else
   return
     DASHER_EDITOR(g_object_new(DASHER_TYPE_EDITOR, NULL));
+#endif
 }
 
 void
@@ -709,7 +718,7 @@ dasher_editor_internal_handle_font(DasherEditor *pSelf, const gchar *szFont) {
     DasherEditorPrivate *pPrivate = DASHER_EDITOR_GET_PRIVATE(pSelf);
 
     PangoFontDescription *pFD = pango_font_description_from_string(szFont);
-    gtk_widget_modify_font(GTK_WIDGET(pPrivate->pTextView), pFD);
+    gtk_widget_override_font(GTK_WIDGET(pPrivate->pTextView), pFD);
   }
 }
 
@@ -806,9 +815,9 @@ dasher_editor_internal_command_open(DasherEditor *pSelf) {
   GtkWidget *filesel = gtk_file_chooser_dialog_new(_("Select File"),
                                                   GTK_WINDOW(pTopLevel),
                                                   GTK_FILE_CHOOSER_ACTION_OPEN,
-                                                  GTK_STOCK_OPEN,
+                                                  _("_Open"),
                                                   GTK_RESPONSE_ACCEPT,
-                                                  GTK_STOCK_CANCEL,
+                                                  _("_Cancel"),
                                                   GTK_RESPONSE_CANCEL, NULL);
 
 #ifdef HAVE_GIO
@@ -840,9 +849,9 @@ dasher_editor_internal_command_save(DasherEditor *pSelf, gboolean bPrompt, gbool
     GtkWidget *filesel = gtk_file_chooser_dialog_new(_("Select File"),
                                                     GTK_WINDOW(pTopLevel),
                                                     GTK_FILE_CHOOSER_ACTION_SAVE,
-                                                    GTK_STOCK_SAVE,
+                                                    _("_Save"),
                                                     GTK_RESPONSE_ACCEPT,
-                                                    GTK_STOCK_CANCEL,
+                                                    _("_Cancel"),
                                                     GTK_RESPONSE_CANCEL, NULL);
 
 #ifdef HAVE_GIO
diff --git a/Src/Gtk2/dasher_main.cpp b/Src/Gtk2/dasher_main.cpp
index f3f33c3..ff56524 100644
--- a/Src/Gtk2/dasher_main.cpp
+++ b/Src/Gtk2/dasher_main.cpp
@@ -523,8 +523,8 @@ void show_game_file_dialog(GtkWidget *pButton, GtkWidget *pWidget, gpointer pDat
        GtkWidget *pFileDialog = gtk_file_chooser_dialog_new("Choose a Game Text",
                                      GTK_WINDOW(objRefs->first),
                                      GTK_FILE_CHOOSER_ACTION_OPEN,
-                                     GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
-                                     GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
+                                     _("_Cancel"), GTK_RESPONSE_CANCEL,
+                                     _("_Open"), GTK_RESPONSE_ACCEPT,
                                      NULL);
        
        gtk_window_set_destroy_with_parent(GTK_WINDOW(pFileDialog), true);
@@ -612,8 +612,8 @@ void dasher_main_command_toggle_game_mode(DasherMain *pSelf) {
                                                 GTK_MESSAGE_OTHER, GTK_BUTTONS_NONE,
                                                 _("Are you sure you wish to turn off game mode? All unsaved 
changes will be lost."));
 
-    GtkWidget *pNoButton = gtk_dialog_add_button(GTK_DIALOG(pDialog), GTK_STOCK_NO, GTK_RESPONSE_REJECT);
-    GtkWidget *pYesButton = gtk_dialog_add_button(GTK_DIALOG(pDialog), GTK_STOCK_YES, GTK_RESPONSE_ACCEPT);
+    GtkWidget *pNoButton = gtk_dialog_add_button(GTK_DIALOG(pDialog), _("No"), GTK_RESPONSE_REJECT);
+    GtkWidget *pYesButton = gtk_dialog_add_button(GTK_DIALOG(pDialog), _("Yes"), GTK_RESPONSE_ACCEPT);
 
     if(gtk_dialog_run(GTK_DIALOG(pDialog))==GTK_RESPONSE_ACCEPT) {
       gtk_dasher_control_set_game_mode(GTK_DASHER_CONTROL(pPrivate->pDasherWidget), false);
@@ -880,8 +880,8 @@ dasher_main_command_import(DasherMain *pSelf) {
   GtkWidget *pFileSel = gtk_file_chooser_dialog_new(_("Select File"), 
                                                     GTK_WINDOW(pPrivate->pMainWindow), 
                                                     GTK_FILE_CHOOSER_ACTION_OPEN, 
-                                                    GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, 
-                                                    GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, 
+                                                    _("_Open"), GTK_RESPONSE_ACCEPT,
+                                                    _("_Cancel"), GTK_RESPONSE_CANCEL,
                                                     NULL);
 
 #ifdef TEACH_TRAINING_HELPER_LOAD_FILE_ABOUT_URI
diff --git a/Src/Gtk2/module_settings_window.cpp b/Src/Gtk2/module_settings_window.cpp
index dfc6eff..ca03f21 100644
--- a/Src/Gtk2/module_settings_window.cpp
+++ b/Src/Gtk2/module_settings_window.cpp
@@ -74,7 +74,7 @@ module_settings_window_init(ModuleSettingsWindow *pDasherControl) {
 
   pPrivateData->pFirst = NULL;
 
-  GtkWidget *pButton = gtk_dialog_add_button(&(pDasherControl->window), GTK_STOCK_CLOSE, GTK_RESPONSE_NONE);
+  GtkWidget *pButton = gtk_dialog_add_button(&(pDasherControl->window), _("_Close"), GTK_RESPONSE_NONE);
 
   g_signal_connect(G_OBJECT(pButton), "clicked", G_CALLBACK(handle_close), pDasherControl);
   g_signal_connect(G_OBJECT(&(pDasherControl->window)), "delete-event", G_CALLBACK(handle_close_event), 
pDasherControl);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]