Browse Source

Several multiscreen fixes in settings dialog and launcher plugin.

(Old svn revision: 18423)
upstream/xfce4-panel-4.10.1
Jasper Huijsmans 18 years ago
parent
commit
4035461125
  1. 12
      config/Makefile.am
  2. 0
      config/panels.xml
  3. 4
      configure.ac
  4. 29
      panel/panel-app.c
  5. 8
      panel/panel-properties.c
  6. 13
      panel/panel-settings.c
  7. 3
      plugins/launcher/launcher-dialog.c
  8. 16
      plugins/launcher/launcher.c

12
config/Makefile.am

@ -1,13 +1,3 @@
confdir = $(sysconfdir)/xdg/xfce4/panel
conf_in_files = \
panels.xml.in
conf_DATA = $(conf_in_files:.xml.in=.xml)
@INTLTOOL_XML_RULE@
EXTRA_DIST = \
$(conf_in_files)
DISTCLEANFILES = \
$(conf_DATA)
conf_DATA = panels.xml

0
config/panels.xml.in → config/panels.xml

4
configure.ac

@ -6,7 +6,7 @@ dnl 2005 Jasper Huijsmans <jasper@xfce.org>
dnl
dnl version info
m4_define([xfce4_panel_version],[4.3.24])
m4_define([xfce4_panel_version],[4.3.25])
m4_define([libxfce4panel_verinfo], [1:1:0])
dnl init autoconf
@ -58,7 +58,7 @@ XDT_CHECK_LIBSM
dnl Check for required packages
dnl XDT_CHECK_PACKAGE([LIBXFCE4MCS_CLIENT], [libxfce4mcs-client-1.0], [4.2.0])
XDT_CHECK_PACKAGE([LIBXFCE4UTIL], [libxfce4util-1.0], [4.3.0])
XDT_CHECK_PACKAGE([LIBXFCEGUI4], [libxfcegui4-1.0], [4.3.5])
XDT_CHECK_PACKAGE([LIBXFCEGUI4], [libxfcegui4-1.0], [4.3.6])
XDT_CHECK_PACKAGE([GTHREAD], [gthread-2.0], [2.4.0])
dnl Check for optional packages

29
panel/panel-app.c

@ -219,6 +219,32 @@ session_die (gpointer client_data)
}
/* screen layout */
static void
monitor_size_changed (GdkScreen *screen)
{
int i;
XfceMonitor *monitor;
GtkWidget *panel;
for (i = 0; i < panel_app.monitor_list->len; ++i)
{
monitor = g_ptr_array_index (panel_app.monitor_list, i);
if (monitor->screen == screen)
{
gdk_screen_get_monitor_geometry (screen, monitor->num,
&(monitor->geometry));
}
}
for (i = 0; i < panel_app.panel_list->len; ++i)
{
panel = g_ptr_array_index (panel_app.panel_list, i);
gtk_widget_queue_resize (panel);
}
}
static void
create_monitor_list (void)
{
@ -260,6 +286,9 @@ create_monitor_list (void)
g_ptr_array_add (panel_app.monitor_list, monitor);
#endif
}
g_signal_connect (screen, "size-changed",
G_CALLBACK (monitor_size_changed), NULL);
}
}

8
panel/panel-properties.c

@ -866,9 +866,17 @@ panel_set_monitor (Panel *panel, int monitor)
if (monitor != priv->monitor)
{
XfceMonitor *xmon;
/* TODO: check range */
priv->monitor = monitor;
xmon = panel_app_get_monitor (monitor);
gtk_widget_hide (GTK_WIDGET (panel));
gtk_window_set_screen (GTK_WINDOW (panel), xmon->screen);
gtk_widget_show (GTK_WIDGET (panel));
panel_set_position (panel, priv->screen_position,
priv->xoffset, priv->yoffset);
}

13
panel/panel-settings.c

@ -452,7 +452,9 @@ update_properties_tab (PanelSettingsDialog *psd)
/* appearance */
gtk_range_set_value (GTK_RANGE (psd->size), priv->size);
gtk_range_set_value (GTK_RANGE (psd->transparency), priv->transparency);
if (psd->transparency)
gtk_range_set_value (GTK_RANGE (psd->transparency),
priv->transparency);
/* behavior */
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (psd->autohide),
@ -1587,6 +1589,13 @@ panel_settings_dialog (GPtrArray *panels, gboolean show_items)
if (dialog_widget)
{
int n = panel_app_get_current_panel ();
GdkScreen *screen =
gtk_widget_get_screen (g_ptr_array_index (panels, n));
if (screen != gtk_widget_get_screen (dialog_widget))
gtk_window_set_screen (GTK_WINDOW (dialog_widget), screen);
gtk_window_present (GTK_WINDOW (dialog_widget));
return;
}
@ -1621,6 +1630,8 @@ panel_settings_dialog (GPtrArray *panels, gboolean show_items)
gtk_window_set_skip_taskbar_hint (GTK_WINDOW (psd->dlg), TRUE);
gtk_window_set_skip_pager_hint (GTK_WINDOW (psd->dlg), TRUE);
gtk_window_set_position (GTK_WINDOW (psd->dlg), GTK_WIN_POS_CENTER);
gtk_window_set_screen (GTK_WINDOW (psd->dlg),
gtk_widget_get_screen (GTK_WIDGET (panel)));
vbox = GTK_DIALOG (psd->dlg)->vbox;
gtk_box_set_spacing (GTK_BOX (vbox), BORDER);

3
plugins/launcher/launcher-dialog.c

@ -526,6 +526,9 @@ create_icon_category_menu (LauncherDialog *ld)
g_signal_connect (mi, "activate",
G_CALLBACK (icon_menu_browse), ld);
gtk_menu_set_screen (GTK_MENU (menu),
gtk_widget_get_screen (ld->launcher->iconbutton));
return menu;
}

16
plugins/launcher/launcher.c

@ -296,14 +296,15 @@ launcher_entry_free (LauncherEntry *e)
}
static void
launcher_entry_exec (LauncherEntry *entry)
launcher_entry_exec (GdkScreen *screen, LauncherEntry *entry)
{
GError *error = NULL;
if (!entry->exec || !strlen (entry->exec))
return;
xfce_exec (entry->real_exec, entry->terminal, entry->startup, &error);
xfce_exec_on_screen (screen, entry->real_exec, entry->terminal,
entry->startup, &error);
if (error)
{
@ -333,6 +334,7 @@ launcher_entry_drop_cb (GdkScreen *screen, LauncherEntry *entry,
if (G_UNLIKELY (!entry->exec))
return;
/* FIXME: realexec may contain arguments -> split up */
if (entry->terminal)
{
argv = g_new (char *, n + 4);
@ -353,7 +355,8 @@ launcher_entry_drop_cb (GdkScreen *screen, LauncherEntry *entry,
argv[n+i] = NULL;
if (!xfce_exec_argv (argv, entry->terminal, entry->startup, &error))
if (!xfce_exec_argv_on_screen (screen, argv, entry->terminal,
entry->startup, &error))
{
char *first =
g_strdup_printf (_("Could not run \"%s\""), entry->name);
@ -462,7 +465,7 @@ launcher_button_released (GtkWidget *mi, GdkEventButton *ev,
static void
launcher_menu_item_activate (GtkWidget *mi, LauncherEntry *entry)
{
launcher_entry_exec (entry);
launcher_entry_exec (gtk_widget_get_screen (mi), entry);
}
static void
@ -793,7 +796,8 @@ launcher_clicked (GtkWidget *w, LauncherPlugin *launcher)
launcher->from_timeout = FALSE;
}
launcher_entry_exec (g_ptr_array_index (launcher->entries, 0));
launcher_entry_exec (gtk_widget_get_screen (w),
g_ptr_array_index (launcher->entries, 0));
}
@ -802,7 +806,7 @@ launcher_clicked (GtkWidget *w, LauncherPlugin *launcher)
static LauncherEntry*
launcher_entry_from_rc_file (XfceRc *rc)
{
LauncherEntry *entry = g_new0 (LauncherEntry, 1);
LauncherEntry *entry = launcher_entry_new ();
const char *s;
if ((s = xfce_rc_read_entry (rc, "Name", NULL)) != NULL)

Loading…
Cancel
Save