Add lxpanel_image_new_for_icon() to replace _gtk_image_new_from_file_scaled()
authorAndriy Grytsenko <andrej@rep.kiev.ua>
Fri, 14 Nov 2014 16:14:58 +0000 (18:14 +0200)
committerAndriy Grytsenko <andrej@rep.kiev.ua>
Fri, 14 Nov 2014 16:23:39 +0000 (18:23 +0200)
The _gtk_image_new_from_file_scaled() has unused parameters and is deprecated.

Also seal back win_grp inside of panel.c.

plugins/menu.c
src/Makefile.am
src/main.c
src/misc.c
src/misc.h
src/panel.c
src/plugin.c
src/plugin.h
src/private.h

index 02bd487..0dbed9d 100644 (file)
@@ -80,9 +80,6 @@ static guint idle_loader = 0;
 
 GQuark SYS_MENU_ITEM_ID = 0;
 
-/* FIXME: this is defined in misc.c and should be replaced later */
-GtkWidget *_gtk_image_new_from_file_scaled(const gchar *file, gint width,
-                                           gint height, gboolean keep_ratio);
 /* FIXME: those are defined on panel main code */
 void restart(void);
 void gtk_run(void);
@@ -807,9 +804,8 @@ read_item(menup *m, config_setting_t *s)
     if (fname) {
         GtkWidget *img;
 
-        /* FIXME: use FmIcon cache and fm_pixbuf_from_icon() API */
         tmp = expand_tilda(fname);
-        img = _gtk_image_new_from_file_scaled(tmp, m->iconsize, m->iconsize, TRUE);
+        img = lxpanel_image_new_for_icon(tmp, m->iconsize);
         gtk_widget_show(img);
         gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img);
         g_free(tmp);
@@ -945,8 +941,7 @@ read_submenu(menup *m, config_setting_t *s, gboolean as_item)
         if (fname) {
             GtkWidget *img;
             char *expanded = expand_tilda(fname);
-            /* FIXME: use FmIcon cache and fm_pixbuf_from_icon() API */
-            img = _gtk_image_new_from_file_scaled(expanded, m->iconsize, m->iconsize, TRUE);
+            img = lxpanel_image_new_for_icon(expanded, m->iconsize);
             gtk_widget_show(img);
             gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(mi), img);
             g_free(expanded);
index 131fca2..94cd749 100644 (file)
@@ -1,5 +1,4 @@
 ## Process this file with automake to produce Makefile.in
-ABI_VERSION=0:0:0
 
 bin_PROGRAMS = lxpanel lxpanelctl
 
@@ -33,6 +32,10 @@ liblxpanel_la_SOURCES = \
        plugin.c \
        conf.c
 
+liblxpanel_la_LDFLAGS = \
+       -no-undefined \
+       -version-info 0:0:0
+
 liblxpanel_la_LIBADD = \
        $(PACKAGE_LIBS) \
        $(X11_LIBS)
index 015b077..0c16c02 100644 (file)
@@ -471,7 +471,6 @@ int main(int argc, char *argv[], char *env[])
     gtk_icon_theme_append_search_path( gtk_icon_theme_get_default(), PACKAGE_DATA_DIR "/images" );
 
     fbev = fb_ev_new();
-    win_grp = gtk_window_group_new();
 
     is_restarting = FALSE;
 
@@ -479,7 +478,7 @@ int main(int argc, char *argv[], char *env[])
     fm_gtk_init(NULL);
 
     /* prepare modules data */
-    _prepare_modules();
+    lxpanel_prepare_modules();
     init_static_plugins();
 
     load_global_config();
@@ -511,12 +510,11 @@ int main(int argc, char *argv[], char *env[])
 
     free_global_config();
 
-    _unload_modules();
+    lxpanel_unload_modules();
     fm_gtk_finalize();
 
     /* gdk_threads_leave(); */
 
-    g_object_unref(win_grp);
     g_object_unref(fbev);
 
     if (!is_restarting)
index 96ced38..c582910 100644 (file)
@@ -1048,6 +1048,11 @@ GtkWidget * _gtk_image_new_from_file_scaled(const gchar * file, gint width, gint
     return _gtk_image_new_for_icon(fm_icon_from_name(file), height);
 }
 
+GtkWidget *lxpanel_image_new_for_icon(const gchar *name, gint height)
+{
+    return _gtk_image_new_for_icon(fm_icon_from_name(name), height);
+}
+
 void
 get_button_spacing(GtkRequisition *req, GtkContainer *parent, gchar *name)
 {
index 76e7faf..9341e83 100644 (file)
@@ -146,6 +146,7 @@ GtkWidget *lxpanel_button_new_for_icon(LXPanel *panel, const gchar *name, GdkCol
 GtkWidget *lxpanel_button_new_for_fm_icon(LXPanel *panel, FmIcon *icon, GdkColor *color, const gchar *label);
 void lxpanel_button_set_icon(GtkWidget* btn, const gchar *name, gint size);
 void lxpanel_button_update_icon(GtkWidget* btn, FmIcon *icon, gint size);
+GtkWidget *lxpanel_image_new_for_icon(const gchar *name, gint height);
 
 G_END_DECLS
 
index 50b31ee..2ecccba 100644 (file)
 
 gchar *cprofile = "default";
 
-GtkWindowGroup* win_grp = NULL; /* window group used to limit the scope of model dialog. */
-
 GSList* all_panels = NULL;  /* a single-linked list storing all panels */
-static gulong monitors_handler = 0;
 
 gboolean is_in_lxde = FALSE;
 
+static GtkWindowGroup* win_grp = NULL; /* window group used to limit the scope of model dialog. */
+
+static gulong monitors_handler = 0;
+
 static void panel_start_gui(LXPanel *p, config_setting_t *list);
 static void ah_start(LXPanel *p);
 static void ah_stop(LXPanel *p);
@@ -1268,7 +1269,15 @@ panel_start_gui(LXPanel *panel, config_setting_t *list)
     gtk_window_set_position(GTK_WINDOW(panel), GTK_WIN_POS_NONE);
     gtk_window_set_decorated(GTK_WINDOW(panel), FALSE);
 
-    gtk_window_group_add_window( win_grp, (GtkWindow*)panel );
+    if (G_UNLIKELY(win_grp == NULL))
+    {
+        win_grp = gtk_window_group_new();
+        g_object_add_weak_pointer(G_OBJECT(win_grp), (gpointer *)&win_grp);
+        gtk_window_group_add_window(win_grp, (GtkWindow*)panel);
+        g_object_unref(win_grp);
+    }
+    else
+        gtk_window_group_add_window(win_grp, (GtkWindow*)panel);
 
     gtk_widget_add_events( w, GDK_BUTTON_PRESS_MASK );
 
index 25857e3..54d912f 100644 (file)
@@ -393,7 +393,7 @@ static gboolean fm_module_callback_lxpanel_gtk(const char *name, gpointer init,
 
 static gboolean old_plugins_loaded = FALSE;
 
-void _prepare_modules(void)
+void lxpanel_prepare_modules(void)
 {
     _all_types = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
     lxpanel_plugin_qdata = g_quark_from_static_string("LXPanel::plugin-data");
@@ -406,7 +406,7 @@ void _prepare_modules(void)
 #endif
 }
 
-void _unload_modules(void)
+void lxpanel_unload_modules(void)
 {
     GHashTableIter iter;
     gpointer key, val;
index 7a55b1c..2e33a41 100644 (file)
@@ -242,7 +242,6 @@ extern void lxpanel_plugin_show_config_dialog(GtkWidget* plugin);
  * @CONF_TYPE_DIRECTORY_ENTRY: directory path entry, pointer is char **
  * @CONF_TYPE_TRIM: just a text in italic, pointer is ignored
  * @CONF_TYPE_EXTERNAL: (since 0.8) provided by caller, pointer is GtkWidget *
- * @CONF_TYPE_HOTKEY: (not implemented) change global hotkey, pointer is char **
  *
  * Type of variable passed to lxpanel_generic_config_dlg().
  */
@@ -254,8 +253,7 @@ typedef enum {
     CONF_TYPE_FILE_ENTRY,
     CONF_TYPE_DIRECTORY_ENTRY,
     CONF_TYPE_TRIM,
-    CONF_TYPE_EXTERNAL,
-    //CONF_TYPE_HOTKEY
+    CONF_TYPE_EXTERNAL
 } PluginConfType;
 
 /**
@@ -282,6 +280,17 @@ extern GtkWidget *lxpanel_generic_config_dlg(const char *title, LXPanel *panel,
                                              GtkWidget *plugin,
                                              const char *name, ...);
 
+/*
+ * creates GtkButton subclass which can change hotkey or mouse binding
+ * emits "changed" signal: void callback(PanelCfgInputButton *, char *, gpointer);
+ * caller should test if keybinding can be used in the callback
+ * widget can be used for lxpanel_generic_config_dlg as CONF_TYPE_EXTERNAL
+ */
+/*
+GtkWidget *panel_config_hotkey_button_new(const char *label, const char *hotkey);
+GtkWidget *panel_config_click_button_new(const char *label, const char *click);
+*/
+
 G_END_DECLS
 
 #endif /* __PLUGIN_H__ */
index 072b830..5fdf847 100644 (file)
@@ -61,8 +61,6 @@ extern gchar *cprofile;
 
 extern GSList* all_panels;
 
-extern GtkWindowGroup* win_grp;
-
 /* Context of a panel on a given edge. */
 struct _Panel {
     char* name;
@@ -207,8 +205,8 @@ static inline char *_user_config_file_name(const char *name1, const char *name2)
 #define STATIC_ICONS
 
 /* Plugins management - new style */
-void _prepare_modules(void);
-void _unload_modules(void);
+void lxpanel_prepare_modules(void);
+void lxpanel_unload_modules(void);
 
 GtkWidget *lxpanel_add_plugin(LXPanel *p, const char *name, config_setting_t *cfg, gint at);
 GHashTable *lxpanel_get_all_types(void); /* transfer none */
@@ -241,13 +239,6 @@ void restart(void);
 void logout(void);
 void gtk_run(void);
 
-/*
- * creates GtkButton subclass which can change, test and apply global hotkey
- * emits "changed" signal: void callback(LXHotkeyButton *, char *, gpointer);
- */
-/*
-GtkWidget *_config_hotkey_button_new(const char *hotkey);
-*/
 
 /* -----------------------------------------------------------------------------
  *   Deprecated declarations. Kept for compatibility with old code plugins.