mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-12-26 05:31:07 +00:00
Merge branch 'master.win32' into 'master'
Some more fixes for Windows Closes #3157 See merge request GNOME/gtk!2580
This commit is contained in:
commit
e4d29ba9fd
@ -429,7 +429,7 @@ sweeper_game_reveal_cell (SweeperGame *self,
|
||||
sweeper_game_check_finished (self);
|
||||
}
|
||||
|
||||
void
|
||||
G_MODULE_EXPORT void
|
||||
minesweeper_cell_clicked_cb (GtkGridView *gridview,
|
||||
guint pos,
|
||||
SweeperGame *game)
|
||||
@ -437,7 +437,7 @@ minesweeper_cell_clicked_cb (GtkGridView *gridview,
|
||||
sweeper_game_reveal_cell (game, pos);
|
||||
}
|
||||
|
||||
void
|
||||
G_MODULE_EXPORT void
|
||||
minesweeper_new_game_cb (GtkButton *button,
|
||||
SweeperGame *game)
|
||||
{
|
||||
|
@ -3276,34 +3276,38 @@ gdk_event_translate (MSG *msg,
|
||||
break;
|
||||
}
|
||||
|
||||
if (LOWORD (msg->wParam) == WA_INACTIVE && msg->lParam != 0)
|
||||
if (LOWORD (msg->wParam) == WA_INACTIVE)
|
||||
{
|
||||
GdkSurface *other_surface = gdk_win32_handle_table_lookup ((HWND) msg->lParam);
|
||||
if (other_surface != NULL &&
|
||||
(GDK_IS_POPUP (other_surface) || GDK_IS_DRAG_SURFACE (other_surface)))
|
||||
if (msg->lParam != 0)
|
||||
{
|
||||
/* We're being deactivated in favour of some popup or temp window.
|
||||
* Since only toplevels can have visual focus, pretend that
|
||||
* nothing happened.
|
||||
*/
|
||||
*ret_valp = 0;
|
||||
return_val = TRUE;
|
||||
break;
|
||||
GdkSurface *other_surface = gdk_win32_handle_table_lookup ((HWND) msg->lParam);
|
||||
if (other_surface != NULL &&
|
||||
(GDK_IS_POPUP (other_surface) || GDK_IS_DRAG_SURFACE (other_surface)))
|
||||
{
|
||||
/* We're being deactivated in favour of some popup or temp window.
|
||||
* Since only toplevels can have visual focus, pretend that
|
||||
* nothing happened.
|
||||
*/
|
||||
*ret_valp = 0;
|
||||
return_val = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
gdk_synthesize_surface_state (window, GDK_TOPLEVEL_STATE_FOCUSED, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
gdk_synthesize_surface_state (window, 0, GDK_TOPLEVEL_STATE_FOCUSED);
|
||||
|
||||
/* Bring any tablet contexts to the top of the overlap order when
|
||||
* one of our windows is activated.
|
||||
* NOTE: It doesn't seem to work well if it is done in WM_ACTIVATEAPP
|
||||
* instead
|
||||
*/
|
||||
_gdk_input_set_tablet_active ();
|
||||
}
|
||||
|
||||
if (LOWORD (msg->wParam) == WA_INACTIVE)
|
||||
gdk_synthesize_surface_state (window, GDK_TOPLEVEL_STATE_FOCUSED, 0);
|
||||
else
|
||||
gdk_synthesize_surface_state (window, 0, GDK_TOPLEVEL_STATE_FOCUSED);
|
||||
|
||||
/* Bring any tablet contexts to the top of the overlap order when
|
||||
* one of our windows is activated.
|
||||
* NOTE: It doesn't seem to work well if it is done in WM_ACTIVATEAPP
|
||||
* instead
|
||||
*/
|
||||
if (LOWORD(msg->wParam) != WA_INACTIVE)
|
||||
_gdk_input_set_tablet_active ();
|
||||
break;
|
||||
|
||||
case WM_ACTIVATEAPP:
|
||||
|
@ -193,8 +193,6 @@ gdk_surface_win32_finalize (GObject *object)
|
||||
surface->hicon_small = NULL;
|
||||
}
|
||||
|
||||
g_free (surface->decorations);
|
||||
|
||||
if (surface->cache_surface)
|
||||
{
|
||||
cairo_surface_destroy (surface->cache_surface);
|
||||
@ -1381,9 +1379,11 @@ get_effective_window_decorations (GdkSurface *window,
|
||||
*decoration = 0;
|
||||
|
||||
if (!GDK_IS_TOPLEVEL (window))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
return FALSE;
|
||||
|
||||
/* we want to apply the "no decorations", if decorations are disabled */
|
||||
if (!GDK_WIN32_SURFACE (window)->decorate_all)
|
||||
return TRUE;
|
||||
|
||||
if ((impl->hint_flags & GDK_HINT_MIN_SIZE) &&
|
||||
(impl->hint_flags & GDK_HINT_MAX_SIZE) &&
|
||||
@ -1779,8 +1779,7 @@ _gdk_win32_surface_lacks_wm_decorations (GdkSurface *window)
|
||||
* even though GdkWMDecoration docs indicate that 0 does NOT mean
|
||||
* "no decorations".
|
||||
*/
|
||||
if (impl->decorations &&
|
||||
*impl->decorations == 0)
|
||||
if (!impl->decorate_all)
|
||||
return TRUE;
|
||||
|
||||
if (GDK_SURFACE_HWND (window) == 0)
|
||||
@ -1880,6 +1879,7 @@ _gdk_win32_surface_update_style_bits (GdkSurface *window)
|
||||
if (get_effective_window_decorations (window, &decorations))
|
||||
{
|
||||
all = (decorations & GDK_DECOR_ALL);
|
||||
|
||||
/* Keep this in sync with the test in _gdk_win32_surface_lacks_wm_decorations() */
|
||||
update_single_bit (&new_style, all, decorations & GDK_DECOR_BORDER, WS_BORDER);
|
||||
update_single_bit (&new_style, all, decorations & GDK_DECOR_RESIZEH, WS_THICKFRAME);
|
||||
@ -4829,6 +4829,7 @@ gdk_win32_toplevel_set_property (GObject *object,
|
||||
break;
|
||||
|
||||
case LAST_PROP + GDK_TOPLEVEL_PROP_DECORATED:
|
||||
GDK_WIN32_SURFACE (surface)->decorate_all = g_value_get_boolean (value);
|
||||
_gdk_win32_surface_update_style_bits (surface);
|
||||
g_object_notify_by_pspec (G_OBJECT (surface), pspec);
|
||||
break;
|
||||
@ -4882,10 +4883,7 @@ gdk_win32_toplevel_get_property (GObject *object,
|
||||
break;
|
||||
|
||||
case LAST_PROP + GDK_TOPLEVEL_PROP_DECORATED:
|
||||
{
|
||||
GdkWMDecoration decorations = GDK_DECOR_ALL;
|
||||
g_value_set_boolean (value, get_effective_window_decorations (surface, &decorations));
|
||||
}
|
||||
g_value_set_boolean (value, GDK_WIN32_SURFACE (surface)->decorate_all);
|
||||
break;
|
||||
|
||||
case LAST_PROP + GDK_TOPLEVEL_PROP_DELETABLE:
|
||||
|
@ -337,8 +337,8 @@ struct _GdkWin32Surface
|
||||
/* Also remember the same position, but in absolute form. */
|
||||
GdkRectangle *snap_stash_int;
|
||||
|
||||
/* Decorations set by gdk_surface_set_decorations() or NULL if unset */
|
||||
GdkWMDecoration* decorations;
|
||||
/* Enable all decorations? */
|
||||
gboolean decorate_all;
|
||||
|
||||
/* No. of windows to force layered windows off */
|
||||
guint suppress_layered;
|
||||
|
Loading…
Reference in New Issue
Block a user