Skip to content
This repository was archived by the owner on Aug 31, 2021. It is now read-only.

Commit 5a40bc6

Browse files
author
Fraser Gordon
committed
Merge pull request #956 from runrevfraser/bugfix-12931
Bugfix 12931
2 parents 3e07d90 + 2d32b5c commit 5a40bc6

4 files changed

Lines changed: 15 additions & 17 deletions

File tree

docs/notes/bugfix-12931.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# Prevent Linux backdrop from gaining focus

engine/src/linux.stubs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -293,6 +293,8 @@ gdk libgdk-x11-2.0.so.0
293293
gdk_cairo_create: (pointer) -> (pointer)
294294
gdk_cairo_region: (pointer, pointer) -> ()
295295
gdk_cairo_set_source_pixbuf: (pointer, pointer, double, double) -> ()
296+
gdk_window_set_skip_taskbar_hint: (pointer, integer) -> ()
297+
gdk_window_set_skip_pager_hint: (pointer, integer) -> ()
296298

297299
gdk_pixbuf libgdk_pixbuf-2.0.so.0
298300
gdk_pixbuf_get_pixels: (pointer) -> (pointer)

engine/src/lnxdc.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -238,8 +238,8 @@ class MCScreenDC : public MCUIDC
238238

239239
virtual MCImageBitmap *snapshot(MCRectangle &r, uint4 window, MCStringRef displayname, MCPoint *size);
240240

241-
virtual void createbackdrop(MCStringRef color);
242-
virtual void destroybackdrop();
241+
//virtual void createbackdrop(MCStringRef color);
242+
void destroybackdrop();
243243

244244
void createbackdrop_window(void);
245245
Window get_backdrop(void) { return backdrop; };

engine/src/lnxdcs.cpp

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1391,13 +1391,14 @@ void MCScreenDC::createbackdrop_window(void)
13911391
gdkwa.event_mask = GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_FOCUS_CHANGE_MASK
13921392
| GDK_POINTER_MOTION_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_EXPOSURE_MASK;
13931393
gdkwa.x = gdkwa.y = 0;
1394-
gdkwa.width = gdkwa.height = 0;
1394+
gdkwa.width = gdkwa.height = 100;
13951395
gdkwa.wclass = GDK_INPUT_OUTPUT;
13961396
gdkwa.visual = getvisual();
13971397
gdkwa.colormap = getcmap();
13981398
gdkwa.window_type = GDK_WINDOW_TOPLEVEL;
13991399

1400-
backdrop = gdk_window_new(NULL, &gdkwa, GDK_WA_VISUAL);
1400+
backdrop = gdk_window_new(getroot(), &gdkwa, GDK_WA_VISUAL);
1401+
gdk_display_sync(MCdpy);
14011402
}
14021403

14031404

@@ -1421,7 +1422,11 @@ void MCScreenDC::enablebackdrop(bool p_hard)
14211422

14221423
if (!t_error)
14231424
{
1424-
gdk_window_fullscreen(backdrop);
1425+
gdk_window_set_functions(backdrop, GdkWMFunction(0));
1426+
gdk_window_set_decorations(backdrop, GdkWMDecoration(0));
1427+
gdk_window_set_skip_taskbar_hint(backdrop, TRUE);
1428+
gdk_window_set_skip_pager_hint(backdrop, TRUE);
1429+
gdk_window_fullscreen(backdrop);
14251430
gdk_window_show_unraised(backdrop);
14261431
MCstacks -> refresh();
14271432
}
@@ -1508,6 +1513,7 @@ void MCScreenDC::assignbackdrop(Window_mode p_mode, Window p_window)
15081513
}
15091514

15101515

1516+
/*void MCScreenDC::createbackdrop(MCStringRef color)
15111517
void MCScreenDC::createbackdrop(MCStringRef color)
15121518
{
15131519
if (m_backdrop_pixmap == DNULL &&
@@ -1544,7 +1550,7 @@ void MCScreenDC::createbackdrop(MCStringRef color)
15441550
}
15451551
15461552
gdk_window_show_unraised(backdrop);
1547-
}
1553+
}*/
15481554

15491555

15501556
void MCScreenDC::destroybackdrop()
@@ -1561,18 +1567,7 @@ void MCScreenDC::destroybackdrop()
15611567
}
15621568

15631569

1564-
1565-
1566-
1567-
15681570
Bool MCScreenDC::is_composite_wm ( int screen_id )
15691571
{
15701572
return gdk_display_supports_composite(dpy);
15711573
}
1572-
1573-
1574-
1575-
1576-
1577-
1578-

0 commit comments

Comments
 (0)