Gnome pager - suggestions/bugs



  The pager would be much, much more useful if it were possible to drag windows
around inside it and to drag windows onto it.  (like in the olvwm pager)

  Also, why does button 2 (which requires chording on my mouse) have to be
pressed to minimize an app using the task list?  I prefer the method used by
icewm (and Win98 for that matter), where the first button can minimize programs.
(I'm not sure what button 2 _should_ be used for, but I want to use button 1 to
minimize apps. :-)

  In addition, I use focus-follows-mouse and would like to extend that to the
pager, so that if I move the mouse over the task-button of a visible,
non-iconified window, it gains focus.  I've attached a patch which
attempts to do both of these, but the focus-follows-mouse stuff doesn't quite
work, mainly because windows get raised instead of just being focused.  Maybe
someone with a few more X clues than me can fix that.

  Windows which are deiconified by clicking on their taskbar
representation get an active border but their button remains undepressed and
they don't have input focus.  What's this a symptom of?

  One other thing, when I select an unfocused window in the taskbar, the
following sequence of events occurs:
  (1) I press the button down.
  (2)  the task button depresses.
  (3) I release the button.
  (4) The task button momentarily flickers back to an undepressed state,
      and the window gains focus (at about the same time, I don't know which
      comes first)
  (5) The task button becomes depressed again and the 

  Eliminating the flicker in (4) would be a nice aesthetic change.

  Ok, hope this is useful!

-- 
  Daniel Burrows

  Nothing is hopeless.

  PROOF:
(a) Assume the opposite.
(b) If something _is_ hopeless, then its condition can only improve.
(c) If its condition can only improve, then there must be hope for it.
(d) Therefore, nothing is hopeless.  QED.
Index: gnomepager_applet.c
===================================================================
RCS file: /cvs/gnome/gnome-core/applets/gnome-pager/gnomepager_applet.c,v
retrieving revision 1.33
diff -u -r1.33 gnomepager_applet.c
--- gnomepager_applet.c	1999/01/24 22:06:33	1.33
+++ gnomepager_applet.c	1999/01/28 02:51:37
@@ -30,6 +30,7 @@
 gchar               show_pager = 1;
 gchar               show_icons = 1;
 gchar		    show_arrow = 1;
+gchar		    taskbar_mouse_focus=1;
 gint                area_w = 1;
 gint                area_h = 1;
 gint                area_x = 0;
@@ -196,6 +197,20 @@
     show_pager = 0;
 }
 
+void
+cb_check_taskbar_mouse_focus(GtkWidget *widget, gpointer data)
+{
+  GtkWidget *prop;
+
+  prop = gtk_object_get_data(GTK_OBJECT(widget),"prop");
+  if(prop)
+    gnome_property_box_changed(GNOME_PROPERTY_BOX(prop));
+  if (GTK_TOGGLE_BUTTON(widget)->active)
+    taskbar_mouse_focus=1;
+  else
+    taskbar_mouse_focus=0;
+}
+
 void 
 cb_adj_max_width(GtkAdjustment *adj, GtkAdjustment *adj1)
 {
@@ -303,6 +318,7 @@
   gnome_config_set_int("gnome_pager/stuff/show_pager", show_pager);
   gnome_config_set_int("gnome_pager/stuff/show_icons", show_icons);
   gnome_config_set_int("gnome_pager/stuff/show_arrow", show_arrow);
+  gnome_config_set_int("gnome_pager/stuff/taskbar_mouse_focus",taskbar_mouse_focus);
   gnome_config_sync();
   widget = NULL;
   data = NULL;
@@ -383,6 +399,14 @@
       gtk_table_attach(GTK_TABLE(table), check,
 		       2, 4, 5, 6, GTK_FILL|GTK_EXPAND,0,0,0);
 
+      check=gtk_check_button_new_with_label(_("Use mouse-focus in taskbar"));
+      gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check),taskbar_mouse_focus);
+      gtk_signal_connect(GTK_OBJECT(check),"clicked",
+      			 GTK_SIGNAL_FUNC(cb_check_taskbar_mouse_focus),NULL);
+      gtk_widget_show(check);
+      gtk_table_attach(GTK_TABLE(table),check,
+                       2,4,6,7,GTK_FILL | GTK_EXPAND,0,0,0);
+
       adj = (GtkAdjustment *)gtk_adjustment_new((gfloat)max_task_width, 20, 
 						(gfloat)gdk_screen_width(), 
 						16, 16, 16 );
@@ -1391,6 +1415,7 @@
   show_pager = gnome_config_get_int("gnome_pager/stuff/show_pager=1");
   show_icons = gnome_config_get_int("gnome_pager/stuff/show_icons=1");
   show_arrow = gnome_config_get_int("gnome_pager/stuff/show_arrow=1");
+  taskbar_mouse_focus = gnome_config_get_int("gnome_pager/stuff/taskbar_mouse_focus=1");
 
   gdk_error_warnings = 0;  
   get_desktop_names();
@@ -1890,6 +1915,8 @@
   Task *t;
   
   t = (Task *)gtk_object_get_data(GTK_OBJECT(widget), "task");
+  if(taskbar_mouse_focus&&!t->iconified&&!t->shaded)
+    client_win_show(t);
   set_task_info_to_button(t);
 }
 
@@ -1921,16 +1948,14 @@
   
   button = event->button;  
   t = (Task *)gtk_object_get_data(GTK_OBJECT(widget), "task");
-  set_task_info_to_button(t);
   if (button == 1)
-    client_win_show(t);
-  else if (button == 2)
     {
-      if (t->iconified)
+      if (t->iconified || !t->focused)
 	client_win_show(t);
       else
 	client_win_iconify(t);
     }
+  set_task_info_to_button(t);
 }
 
 void

PGP signature



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