summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Trevisan (Treviño) <mail@3v1n0.net>2014-11-17 17:22:01 +0100
committerMarco Trevisan (Treviño) <mail@3v1n0.net>2014-11-17 17:23:36 +0100
commite0e46a4f6bf852d5ead8b8c015aa8eaf4e80599e (patch)
tree036fae326f5acfb16189add3d9bbd491cd5579e5
parent76510619206ae8233ed49b379343b689a8028920 (diff)
downloadgtk+-e0e46a4f6bf852d5ead8b8c015aa8eaf4e80599e.tar.gz
mir: update surface type based on events
-rw-r--r--gdk/mir/gdkmir-private.h2
-rw-r--r--gdk/mir/gdkmireventsource.c1
-rw-r--r--gdk/mir/gdkmirwindowimpl.c17
3 files changed, 16 insertions, 4 deletions
diff --git a/gdk/mir/gdkmir-private.h b/gdk/mir/gdkmir-private.h
index 78e3ed3415..8305096241 100644
--- a/gdk/mir/gdkmir-private.h
+++ b/gdk/mir/gdkmir-private.h
@@ -61,6 +61,8 @@ GdkWindowImpl *_gdk_mir_window_impl_new (void);
void _gdk_mir_window_impl_set_surface_state (GdkMirWindowImpl *impl, MirSurfaceState state);
+void _gdk_mir_window_impl_set_surface_type (GdkMirWindowImpl *impl, MirSurfaceType type);
+
void _gdk_mir_window_impl_set_cursor_state (GdkMirWindowImpl *impl, gdouble x, gdouble y, gboolean cursor_inside, MirMotionButton button_state);
void _gdk_mir_window_impl_get_cursor_state (GdkMirWindowImpl *impl, gdouble *x, gdouble *y, gboolean *cursor_inside, MirMotionButton *button_state);
diff --git a/gdk/mir/gdkmireventsource.c b/gdk/mir/gdkmireventsource.c
index 61ae346077..cfe36e8df5 100644
--- a/gdk/mir/gdkmireventsource.c
+++ b/gdk/mir/gdkmireventsource.c
@@ -343,6 +343,7 @@ handle_surface_event (GdkWindow *window, const MirSurfaceEvent *event)
switch (event->attrib)
{
case mir_surface_attrib_type:
+ _gdk_mir_window_impl_set_surface_type (impl, event->value);
break;
case mir_surface_attrib_state:
_gdk_mir_window_impl_set_surface_state (impl, event->value);
diff --git a/gdk/mir/gdkmirwindowimpl.c b/gdk/mir/gdkmirwindowimpl.c
index f5cf957124..418724be42 100644
--- a/gdk/mir/gdkmirwindowimpl.c
+++ b/gdk/mir/gdkmirwindowimpl.c
@@ -93,6 +93,12 @@ _gdk_mir_window_impl_set_surface_state (GdkMirWindowImpl *impl, MirSurfaceState
}
void
+_gdk_mir_window_impl_set_surface_type (GdkMirWindowImpl *impl, MirSurfaceType type)
+{
+ impl->surface_type = type;
+}
+
+void
_gdk_mir_window_impl_set_cursor_state (GdkMirWindowImpl *impl,
gdouble x,
gdouble y,
@@ -741,7 +747,6 @@ gdk_mir_window_impl_set_type_hint (GdkWindow *window,
{
case GDK_WINDOW_TYPE_HINT_NORMAL:
case GDK_WINDOW_TYPE_HINT_DOCK:
- case GDK_WINDOW_TYPE_HINT_TOOLBAR:
case GDK_WINDOW_TYPE_HINT_DESKTOP:
mir_type = mir_surface_type_normal;
break;
@@ -755,7 +760,7 @@ gdk_mir_window_impl_set_type_hint (GdkWindow *window,
case GDK_WINDOW_TYPE_HINT_DROPDOWN_MENU:
case GDK_WINDOW_TYPE_HINT_POPUP_MENU:
case GDK_WINDOW_TYPE_HINT_COMBO:
- mir_type = mir_surface_type_popover;
+ mir_type = mir_surface_type_menu;
break;
case GDK_WINDOW_TYPE_HINT_TOOLTIP:
mir_type = mir_surface_type_tip;
@@ -765,6 +770,9 @@ gdk_mir_window_impl_set_type_hint (GdkWindow *window,
case GDK_WINDOW_TYPE_HINT_NOTIFICATION:
mir_type = mir_surface_type_overlay;
break;
+ case GDK_WINDOW_TYPE_HINT_TOOLBAR:
+ mir_type = mir_surface_type_satellite;
+ break;
}
set_surface_type (GDK_MIR_WINDOW_IMPL (window->impl), mir_type);
@@ -780,7 +788,6 @@ gdk_mir_window_impl_get_type_hint (GdkWindow *window)
case mir_surface_type_normal:
case mir_surface_type_freestyle:
case mir_surface_type_inputmethod:
- case mir_surface_type_satellite:
return GDK_WINDOW_TYPE_HINT_NORMAL;
case mir_surface_type_utility:
return GDK_WINDOW_TYPE_HINT_UTILITY;
@@ -788,10 +795,12 @@ gdk_mir_window_impl_get_type_hint (GdkWindow *window)
return GDK_WINDOW_TYPE_HINT_DIALOG;
case mir_surface_type_tip:
return GDK_WINDOW_TYPE_HINT_TOOLTIP;
- case mir_surface_type_popover:
+ case mir_surface_type_menu:
return GDK_WINDOW_TYPE_HINT_MENU;
case mir_surface_type_overlay:
return GDK_WINDOW_TYPE_HINT_NOTIFICATION;
+ case mir_surface_type_satellite:
+ return GDK_WINDOW_TYPE_HINT_TOOLBAR;
case mir_surface_types:
break;
}