r403 - trunk/src/target/OM-2007/openmoko-libs/libmokoui
mickey at gta01.hmw-consulting.de
mickey at gta01.hmw-consulting.de
Wed Dec 13 11:22:01 CET 2006
Author: mickey
Date: 2006-12-13 11:22:00 +0100 (Wed, 13 Dec 2006)
New Revision: 403
Modified:
trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-finger-tool-box.c
trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-finger-wheel.c
Log:
mokoui: fix MokoFingerWheel and MokoFingerToolBox z-order
Both windows are now embedded in GTK_WINDOW_TOPLEVEL instead of GTK_WINDOW_POPUP
and the window manager is instructed how to z-order sort them by using
gtk_window_set_transient for. We may have to adjust this logic a bit when we
have more windows belonging to one application using the wheel.
Modified: trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-finger-tool-box.c
===================================================================
--- trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-finger-tool-box.c 2006-12-13 09:28:14 UTC (rev 402)
+++ trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-finger-tool-box.c 2006-12-13 10:22:00 UTC (rev 403)
@@ -224,12 +224,14 @@
MokoFingerToolBoxPrivate* priv = MOKO_FINGER_TOOL_BOX_GET_PRIVATE(widget);
if ( !priv->popup )
{
- priv->popup = gtk_window_new(GTK_WINDOW_POPUP);
+ priv->popup = gtk_window_new(GTK_WINDOW_TOPLEVEL); //GTK_WINDOW_POPUP
gtk_container_add( GTK_CONTAINER(priv->popup), widget );
}
MokoWindow* window = moko_application_get_main_window( moko_application_get_instance() );
g_return_if_fail( MOKO_IS_FINGER_WINDOW(window) );
+ //FIXME set also transient for all other windows belonging to this app?
+ gtk_window_set_transient_for( priv->popup, window );
GtkAllocation geometry;
gboolean valid = moko_finger_window_get_geometry_hint( MOKO_FINGER_WINDOW(window), widget, &geometry );
g_signal_connect_after( G_OBJECT(widget), "size_allocate", G_CALLBACK(cb_size_allocate), widget );
@@ -239,7 +241,8 @@
gtk_widget_show( priv->popup );
MokoFingerWheel* wheel = moko_finger_window_get_wheel( MOKO_FINGER_WINDOW(window) );
- if ( wheel && GTK_WIDGET_VISIBLE(wheel) ) moko_finger_wheel_raise( wheel );
+ if ( wheel && GTK_WIDGET_VISIBLE(wheel) )
+ moko_finger_wheel_set_transient_for( wheel, priv->popup ); //moko_finger_wheel_raise( wheel );
}
static void moko_finger_tool_box_hide(GtkWidget* widget)
Modified: trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-finger-wheel.c
===================================================================
--- trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-finger-wheel.c 2006-12-13 09:28:14 UTC (rev 402)
+++ trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-finger-wheel.c 2006-12-13 10:22:00 UTC (rev 403)
@@ -209,13 +209,15 @@
MokoFingerWheelPrivate* priv = MOKO_FINGER_WHEEL_GET_PRIVATE(widget);
if ( !priv->popup )
{
- priv->popup = gtk_window_new(GTK_WINDOW_POPUP);
+ priv->popup = gtk_window_new(GTK_WINDOW_TOPLEVEL); // GTK_WINDOW_POPUP
//gtk_window_set_decorated( priv->popup, FALSE );
//FIXME Setting it to transparent is probably not necessary since we issue a mask anyway, right?
//gtk_widget_set_name( GTK_WIDGET(priv->popup), "transparent" );
gtk_container_add( GTK_CONTAINER(priv->popup), widget );
MokoWindow* window = moko_application_get_main_window( moko_application_get_instance() );
//FIXME check if it's a finger window
+ //FIXME set it not only transient for the main window, but also for other window belonging to this application
+ gtk_window_set_transient_for(priv->popup, window );
GtkAllocation geometry;
gboolean valid = moko_finger_window_get_geometry_hint( window, widget, &geometry );
@@ -292,6 +294,14 @@
gdk_window_raise( GTK_WIDGET(priv->popup)->window );
}
+void moko_finger_wheel_set_transient_for(MokoFingerWheel* self, GtkWindow* window)
+{
+ moko_debug( "moko_finger_wheel_set_transient_for" );
+ MokoFingerWheelPrivate* priv = MOKO_FINGER_WHEEL_GET_PRIVATE(self);
+ g_return_if_fail(priv->popup);
+ gtk_window_set_transient_for( priv->popup, window );
+}
+
/**
* @brief Caculate the area that user checked
*/
More information about the commitlog
mailing list