Place plugin configuration window near the plugin, not at bottom of screen.
authorAndriy Grytsenko <andrej@rep.kiev.ua>
Sat, 26 Jul 2014 21:31:11 +0000 (00:31 +0300)
committerAndriy Grytsenko <andrej@rep.kiev.ua>
Sat, 26 Jul 2014 21:31:11 +0000 (00:31 +0300)
We can use lxpanel_plugin_popup_set_position_helper() then move the window.

src/configurator.c

index 27ff274..33d89c6 100644 (file)
@@ -1349,6 +1349,8 @@ static void generic_config_dlg_response(GtkWidget * dlg, int response, Panel * p
 
 void _panel_show_config_dialog(Panel *panel, GtkWidget *p, GtkWidget *dlg)
 {
+    gint x, y;
+
     /* If there is already a plugin configuration dialog open, close it.
      * Then record this one in case the panel or plugin is deleted. */
     if (panel->plugin_pref_dialog != NULL)
@@ -1360,6 +1362,11 @@ void _panel_show_config_dialog(Panel *panel, GtkWidget *p, GtkWidget *dlg)
     g_signal_connect(p, "destroy", G_CALLBACK(on_plugin_destroy), dlg);
     g_object_set_data(G_OBJECT(dlg), "generic-config-plugin", p);
 
+    /* adjust config dialog window position to be near plugin */
+    gtk_widget_realize(dlg);
+    lxpanel_plugin_popup_set_position_helper(panel, p, dlg, &x, &y);
+    gdk_window_move(gtk_widget_get_window(dlg), x, y);
+
     gtk_window_present(GTK_WINDOW(dlg));
 }