summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-02-17 21:15:59 +0000
committerThomas James Alexander Thurman <tthurman@src.gnome.org>2007-02-17 21:15:59 +0000
commit85e43a402f5d1c5397ff51561c51c94ffd35e285 (patch)
tree2e59ea5a21d1a6e112d4a444dfc431cfefd756c9
parentc1fcc4bb6b2448a27eea86a1d076372d33439c44 (diff)
downloadmetacity-85e43a402f5d1c5397ff51561c51c94ffd35e285.tar.gz
Split out code for different kinds of click into separate functions. Fixes
2007-02-17 Linus Torvalds <torvalds@woody.linux-foundation.org> * src/frames.c (meta_frames_button_press_event): Split out code for different kinds of click into separate functions. Fixes #408899. * src/frames.c (meta_frame_titlebar_event, meta_frame_double_click_event, meta_frame_middle_click_event, meta_frame_right_click_event): new functions. svn path=/trunk/; revision=3061
-rw-r--r--ChangeLog9
-rw-r--r--src/frames.c157
2 files changed, 104 insertions, 62 deletions
diff --git a/ChangeLog b/ChangeLog
index fe70d6a2..98938cdd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2007-02-17 Linus Torvalds <torvalds@woody.linux-foundation.org>
+
+ * src/frames.c (meta_frames_button_press_event): Split out
+ code for different kinds of click into separate functions.
+ Fixes #408899.
+ * src/frames.c (meta_frame_titlebar_event,
+ meta_frame_double_click_event, meta_frame_middle_click_event,
+ meta_frame_right_click_event): new functions.
+
2007-01-27 Bruno Boaventura <brunobol@gnome.org>
* src/metacity-dialog.c (kill_window_question): Change dialog
diff --git a/src/frames.c b/src/frames.c
index 37b1e79e..d6e953b8 100644
--- a/src/frames.c
+++ b/src/frames.c
@@ -1188,6 +1188,98 @@ redraw_control (MetaFrames *frames,
}
static gboolean
+meta_frame_titlebar_event (MetaUIFrame *frame,
+ GdkEventButton *event,
+ int action)
+{
+ MetaFrameFlags flags;
+
+ switch (action)
+ {
+ case META_ACTION_DOUBLE_CLICK_TITLEBAR_TOGGLE_SHADE:
+ {
+ flags = meta_core_get_frame_flags (gdk_display, frame->xwindow);
+
+ if (flags & META_FRAME_ALLOWS_SHADE)
+ {
+ if (flags & META_FRAME_SHADED)
+ meta_core_unshade (gdk_display,
+ frame->xwindow,
+ event->time);
+ else
+ meta_core_shade (gdk_display,
+ frame->xwindow,
+ event->time);
+ }
+ }
+ break;
+
+ case META_ACTION_DOUBLE_CLICK_TITLEBAR_TOGGLE_MAXIMIZE:
+ {
+ flags = meta_core_get_frame_flags (gdk_display, frame->xwindow);
+
+ if (flags & META_FRAME_ALLOWS_MAXIMIZE)
+ {
+ meta_core_toggle_maximize (gdk_display, frame->xwindow);
+ }
+ }
+ break;
+
+ case META_ACTION_DOUBLE_CLICK_TITLEBAR_MINIMIZE:
+ {
+ flags = meta_core_get_frame_flags (gdk_display, frame->xwindow);
+
+ if (flags & META_FRAME_ALLOWS_MINIMIZE)
+ {
+ meta_core_minimize (gdk_display, frame->xwindow);
+ }
+ }
+ break;
+
+ case META_ACTION_DOUBLE_CLICK_TITLEBAR_NONE:
+ /* Yaay, a sane user that doesn't use that other weird crap! */
+ break;
+
+ case META_ACTION_DOUBLE_CLICK_TITLEBAR_LAST:
+ break;
+ }
+
+ return TRUE;
+}
+
+static gboolean
+meta_frame_double_click_event (MetaUIFrame *frame,
+ GdkEventButton *event)
+{
+ int action = meta_prefs_get_action_double_click_titlebar ();
+
+ return meta_frame_titlebar_event (frame, event, action);
+}
+
+static gboolean
+meta_frame_middle_click_event (MetaUIFrame *frame,
+ GdkEventButton *event)
+{
+ meta_core_user_lower_and_unfocus (gdk_display,
+ frame->xwindow,
+ event->time);
+ return TRUE;
+}
+
+static gboolean
+meta_frame_right_click_event(MetaUIFrame *frame,
+ GdkEventButton *event)
+{
+ meta_core_show_window_menu (gdk_display,
+ frame->xwindow,
+ event->x_root,
+ event->y_root,
+ event->button,
+ event->time);
+ return TRUE;
+}
+
+static gboolean
meta_frames_button_press_event (GtkWidget *widget,
GdkEventButton *event)
{
@@ -1233,59 +1325,7 @@ meta_frames_button_press_event (GtkWidget *widget,
event->button == 1 &&
event->type == GDK_2BUTTON_PRESS)
{
- MetaFrameFlags flags;
-
- switch (meta_prefs_get_action_double_click_titlebar ())
- {
- case META_ACTION_DOUBLE_CLICK_TITLEBAR_TOGGLE_SHADE:
- {
- flags = meta_core_get_frame_flags (gdk_display, frame->xwindow);
-
- if (flags & META_FRAME_ALLOWS_SHADE)
- {
- if (flags & META_FRAME_SHADED)
- meta_core_unshade (gdk_display,
- frame->xwindow,
- event->time);
- else
- meta_core_shade (gdk_display,
- frame->xwindow,
- event->time);
- }
- }
- break;
-
- case META_ACTION_DOUBLE_CLICK_TITLEBAR_TOGGLE_MAXIMIZE:
- {
- flags = meta_core_get_frame_flags (gdk_display, frame->xwindow);
-
- if (flags & META_FRAME_ALLOWS_MAXIMIZE)
- {
- meta_core_toggle_maximize (gdk_display, frame->xwindow);
- }
- }
- break;
-
- case META_ACTION_DOUBLE_CLICK_TITLEBAR_MINIMIZE:
- {
- flags = meta_core_get_frame_flags (gdk_display, frame->xwindow);
-
- if (flags & META_FRAME_ALLOWS_MINIMIZE)
- {
- meta_core_minimize (gdk_display, frame->xwindow);
- }
- }
- break;
-
- case META_ACTION_DOUBLE_CLICK_TITLEBAR_NONE:
- /* Yaay, a sane user that doesn't use that other weird crap! */
- break;
-
- case META_ACTION_DOUBLE_CLICK_TITLEBAR_LAST:
- break;
- }
-
- return TRUE;
+ return meta_frame_double_click_event (frame, event);
}
if (meta_core_get_grab_op (gdk_display) !=
@@ -1474,18 +1514,11 @@ meta_frames_button_press_event (GtkWidget *widget,
}
else if (event->button == 2)
{
- meta_core_user_lower_and_unfocus (gdk_display,
- frame->xwindow,
- event->time);
+ return meta_frame_middle_click_event (frame, event);
}
else if (event->button == 3)
{
- meta_core_show_window_menu (gdk_display,
- frame->xwindow,
- event->x_root,
- event->y_root,
- event->button,
- event->time);
+ return meta_frame_right_click_event (frame, event);
}
return TRUE;